#include "main.h"
typedef struct Queue1{
    int * front;
    int * rear;
}Queue1 ;
Queue1 b;
// 初始化队列。初始化成功返回0；初始化失败返回1。
int init_queue(Queue **q){
    (*q) = (Queue *) malloc(sizeof(Queue));
    if(!*q){
        return 1;
    }
    b.front = (*q)->elements;
    (*q)->size = 0;
    b.rear = b.front;
    return 0;
}

// 在队列q的尾巴上增加一个元素，其值为value。增加成功，返回0；增加失败，返回1
int enqueue (Queue * q, int value){
    if(q->size>QUEUE_MAX_SIZE){
        return 1;
    }
    b.rear++;
    q->elements[q->size] = value;
    q->size++;
    return 0;
}

// 从队列q上摘取（去掉）一个元素，将其值放入value中。摘取成功，返回0；摘取失败，返回1。
int dequeue(Queue * q, int *value){
    if(b.front==b.rear){
        return 1;
    }
    *value = *(b.front);

    b.front++;
    q->size--;
    return 0;
}


// 获取队列q的第一个元素，但是并不去掉该元素，并将该值放入value中。获取成功返回0；获取失败，返回1。
int first(Queue * q, int * value){
    if(b.front==b.rear){
        return 1;
    }
    *value = *(b.front);
    return 0;
    }
// 判断队列q是否为空。为空，返回0；不为空，返回1。
int is_empty(Queue * q){
    if (q->size == 0)
        return 0;
    return 1;
    }


// 返回队列q中的元素个数。
int size(Queue * q){
        return q->size;
    };
    int main(){
}